package com.leo.foodmaster.admin.system.service;

import com.leo.foodmaster.admin.system.entity.Permission;
import com.baomidou.mybatisplus.extension.service.IService;
import com.leo.foodmaster.admin.system.entity.Router;
import com.leo.foodmaster.commons.entity.Result;
import com.leo.foodmaster.commons.entity.TreeSelect;

import java.util.List;

/**
 * <p>
 * 菜单权限表 服务类
 * </p>
 *
 * @author Leo
 * @since 2021-06-18
 */
public interface IPermissionService extends IService<Permission> {
    /**
     * 刷新权限角色管理到Redis缓存
     */
    void refreshPermissionRolesToCache();

    /**
     * 根据登录用户Id查询用户权限
     * @param userId 用户Id
     * @return 用户权限列表
     */
    List<String> getPermissionsByUserId(Long userId);

    /**
     * 根据用户Id查询路由树形列表
     * @param userId 用户Id
     * @return  List<RouterDTO>
     */
    List<Router> getRoutersByUserId(Long userId);

    /**
     * 查询菜单列表
     * @param title 菜单名称
     * @param status 菜单状态
     * @return List<Permission>
     */
    List<Permission> listPermission(String title, String status);

    /**
     * 查询菜单树形列表
     * @param userId 用户Id
     * @return List<TreeSelect>
     */
    List<TreeSelect> treeSelect(Long userId);

    /**
     * 根据角色Id查询菜单Id列表
     * @param id 角色Id
     * @return List<Long>
     */
    List<Long> permissionIdsByRoleId(Long id);

    /**
     * 删除权限
     * @param id 权限Id
     * @return Result<Object>
     */
    Result<Object> deletePermission(Long id);
}
